package com.didispace;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

import com.eshin.testcontext.ITestContext;
import com.eshin.testcontext.MyShowContextBean;
import com.eshin.testcontext.MyTestContextFactory;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableCircuitBreaker
//@EnableHystrixDashboard
public class FeignApplication {

	@Value("${testcontext.name:hello}")
	String name;
	@Bean
	@LoadBalanced
	RestTemplate restTemplate() {
		return new RestTemplate();
	}

	public static void main(String[] args) {
		SpringApplication.run(FeignApplication.class, args);
	}
	@Bean
	public MyTestContextFactory getMyTestContextFactory(){
		return new MyTestContextFactory();
	}
//	@Bean
	public ITestContext getTestContext(){
		return new MyShowContextBean(name);
	}

}
